<?php

	require_once './model/ForumHandler.php';
	require_once './view/ForumView.php';

	class ForumController {
		
		public function DoControll(LoginHandler $loginInstance, ForumHandler $forumInstance) {
			
			$message = "";
			$vInstance = new ForumView();

			//Om man är inloggad:
			if ($loginInstance->IsLoggedIn() == true) {
				
				//Om man vill skapa nytt inlägg.
				if ($vInstance->NewButton() == true) {
					return $vInstance->NewTopic();
				}
				
				//Lägger till inlägget i databasen.
				if ($vInstance->SubmitButton() == true) {
					
					/*if ($forumInstance->SaveNewTopic($vInstance->GetTopic(), $vInstance->GetDetail(), $loginInstance->GetSession()) == false) {
						$message = $vInstance->WrongFormat();
					}*/
					
					$forumInstance->SaveNewTopic($vInstance->GetTopic(), $vInstance->GetDetail(), $loginInstance->GetSession());
				}	
				
				//Om man väljer ett visst ämne.
				if ($vInstance->GetSelectedLink() == true) {
					
					//Visar formulär för att svara på inlägget.
					if ($vInstance->NewAnswerButton() == true) {						
						return $vInstance->NewAnswer();
					}
					
					//Om man väljer att spara:
					if ($vInstance->AnswerButton() == true) {
						
						/*if ($forumInstance->SaveAnswer($vInstance->GetSelectedLink(), $vInstance->GetAnswer(), $loginInstance->GetSession()) == false) {
							$message = $vInstance->WrongFormat();
						}*/
						
						$forumInstance->SaveAnswer($vInstance->GetSelectedLink(), $vInstance->GetAnswer(), $loginInstance->GetSession());
					}
					
					return $vInstance->CreateNewAnswer() . $vInstance->ViewAnswers($forumInstance->SelectedTopicDetail($vInstance->GetSelectedLink()), 
						$forumInstance->GetAllAnswers($vInstance->GetSelectedLink()));
				}
				
				//Om vi försöker radera ett ämne.
				if ($vInstance->GetDeleteLink() == true) {
					
					//Kollar om man raderar det man själv skapat.
					if ($loginInstance->GetSession() == $forumInstance->CheckUser($vInstance->GetDeleteLink())) {
						$message = $vInstance->Deleted();
						$forumInstance->DeleteTopic($vInstance->GetDeleteLink());
					}
					else {
						$message = $vInstance->WrongUser();
					}
					
				}
				
				//Redigera ett ämne.
				if ($vInstance->GetEditLink() == true) {
					
					if ($loginInstance->GetSession() == $forumInstance->CheckUser($vInstance->GetEditLink())) {
						
						if ($vInstance->EditButton() == true) {
							$forumInstance->EditTopic($vInstance->GetEditLink(), $vInstance->GetEditTopic());
							return $vInstance->CreateNew() . $vInstance->ViewAllTopics($forumInstance->GetAllTopics());
						}
						
						return $vInstance->UpdateTopic();
					}
					else {
						$message = $vInstance->WrongUser();
					}
				}
				
				//Om vi försöker radera ett svar.
				if ($vInstance->GetDeleteAnswerLink() == true) {
					
					//Kollar om man raderar det man själv skapat.
					if ($loginInstance->GetSession() == $forumInstance->CheckUserForAnswer($vInstance->GetDeleteAnswerLink())) {
						$message = $vInstance->Deleted();
						$forumInstance->DeleteAnswer($vInstance->GetDeleteAnswerLink());
					}
					else {
						$message = $vInstance->WrongUser();
					}
				}
				
				//Tillbaka till listan.
				if ($vInstance->IsViewingList() == true) {
					return $vInstance->CreateNew() . $vInstance->ViewAllTopics($forumInstance->GetAllTopics());
				}
			
				return $message . $vInstance->CreateNew() . $vInstance->ViewAllTopics($forumInstance->GetAllTopics());
			}
			
			//Är man utloggad:
			if ($loginInstance->IsLoggedIn() == false) {
				
				//Om man väljer ett visst ämne.
				if ($vInstance->GetSelectedLink() == true) {
					return $vInstance->ViewAnswers($forumInstance->SelectedTopicDetail($vInstance->GetSelectedLink()), 
						$forumInstance->GetAllAnswers($vInstance->GetSelectedLink())); 
				}
				
				//Om vi försöker radera.
				if ($vInstance->GetDeleteLink() == true) {				
					$message = $vInstance->WrongUser();
				}
				
				//Om vi försöker redigera.
				if ($vInstance->GetEditLink() == true) {				
					$message = $vInstance->WrongUser();
				}
				
				//Tillbaka till listan.
				if ($vInstance->IsViewingList() == true) {
					return $vInstance->ViewAllTopics($forumInstance->GetAllTopics());
				}
			
				return $message . $vInstance->ViewAllTopics($forumInstance->GetAllTopics());
			}
		}
	}
